Expand description

Low-level protocol logic for the QUIC protoocol

quinn-proto contains a fully deterministic implementation of QUIC protocol logic. It contains no networking code and does not get any relevant timestamps from the operating system. Most users may want to use the futures-based quinn API instead.

The quinn-proto API might be of interest if you want to use it from a C or C++ project through C bindings or if you want to use a different event loop than the one tokio provides.

The most important types are Endpoint, which conceptually represents the protocol state for a single socket and mostly manages configuration and dispatches incoming datagrams to the related Connection. Connection types contain the bulk of the protocol logic related to managing a single connection and all the related state (such as streams).

Modules

Logic for controlling the rate at which data is sent

Traits and implementations for the QUIC cryptography protocol

Types that are generic over the crypto protocol implementation

QUIC connection transport parameters

Structs

Reason given by an application for closing the connection

A chunk of data from the receive stream

Chunks

Configuration for outgoing connections

Protocol state and logic for a single QUIC connection

Reason given by the transport for closing the connection

Events sent from an Endpoint to a Connection

Internal identifier for a Connection currently associated with an endpoint

Protocol-level identifier for a connection.

Connection statistics

An unreliable datagram

API to control datagram traffic

The main entry point to the library

Global configuration for the endpoint, affecting all connections

Events sent from a Connection to an Endpoint

Maximum duration of inactivity to accept before timing out the connection.

Generates purely random connection IDs of a certain length

Access to streams

Access to streams

Parameters governing incoming connections

Identifier for a stream within a particular connection

Access to streams

An outgoing packet

Parameters governing the core QUIC state machine

Transport-level errors occur when a peer violates the protocol specification

Transport-level error code

Error indicating that a stream has not been opened or has already been finished or reset

An integer less than 2^62

Error returned when constructing a VarInt from a value >= 2^62

Indicates how many bytes and chunks had been transferred in a write operation

Enums

Errors in the configuration of an endpoint

Errors in the parameters being used to create a new connection

Reasons why a connection might be lost

Event resulting from processing a single datagram

Whether a stream communicates data in both directions or only from the initiator

Explicit congestion notification codepoint

Events of interest to the application

Reasons why attempting to finish a stream might fail

Errors triggered when reading from a recv stream

Errors triggered when opening a recv stream for reading

Errors that can arise when sending a datagram

Whether an endpoint was the initiator of a connection

Application events about streams

Errors triggered while writing to a send stream

Constants

The QUIC protocol version implemented.

Traits

A source of one or more buffers which can be converted into Bytes buffers on demand

Generates connection IDs for incoming connections